﻿/**
Провайдер AnyBalance (http://any-balance-providers.googlecode.com)
*/

var g_headers = {
	'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
	'Accept-Charset': 'windows-1251,utf-8;q=0.7,*;q=0.3',
	'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4',
	'Connection': 'keep-alive',
	'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36',
};

function main() {
	var prefs = AnyBalance.getPreferences();
	var baseurl = 'https://assa.intertelecom.ru.com/';
	AnyBalance.setDefaultCharset('windows-1251');
	
	checkEmpty(prefs.login, 'Введите логин!');
	checkEmpty(prefs.password, 'Введите пароль!');
	
	var html = AnyBalance.requestGet(baseurl + 'ru/login/', g_headers);
	
	if(!html || AnyBalance.getLastStatusCode() > 400){
		AnyBalance.trace(html);
		throw new AnyBalance.Error('Ошибка при подключении к сайту провайдера! Попробуйте обновить данные позже.');
	}
	
	html = AnyBalance.requestPost(baseurl + 'ru/login', {
		phone: prefs.login,
		pass: prefs.password,
		ref_link: '',
		js: 1
	}, addHeaders({Referer: baseurl + 'ru/login'}));
	
	if (!/logout/i.test(html)) {
		var error = getParam(html, null, null, /<p[^>]+class="t-error"[^>]*>([\s\S]+?)<\/p>/i, replaceTagsAndSpaces, html_entity_decode);
		if (error)
			throw new AnyBalance.Error(error, null, /указан неверный пароль|указанный номер телефона не зарегистрирован/i.test(error));
		
		AnyBalance.trace(html);
		throw new AnyBalance.Error('Не удалось зайти в личный кабинет. Сайт изменен?');
	}
	
	var result = {success: true};
	
	getParam(html, result, 'accnum', /Лицевой счет[^>]*>\s*([\s\S]+?)<\/td>/i, replaceTagsAndSpaces, parseBalance);
	getParam(html, result, 'fio', /Абонент[^>]*>\s*([\s\S]+?)<\/td>/i, replaceTagsAndSpaces, html_entity_decode);
	getParam(html, result, 'status', /Состояние[^>]*>\s*([\s\S]+?)<\/td>/i, replaceTagsAndSpaces, html_entity_decode);
	getParam(html, result, '__tariff', /Тарифный план[^>]*>\s*([\s\S]+?)<\/td>[^>]*>\s*([\s\S]+?)<\/td>/i, replaceTagsAndSpaces, html_entity_decode);
	getParam(html, result, 'lastActivity', /Дата последней абонентской активности[^>]*>\s*([\s\S]+?)<\/td>[^>]*>\s*([\s\S]+?)<\/td>/i, replaceTagsAndSpaces, parseDate);
	getParam(html, result, 'saldo', /Сальдо[^>]*>\s*([\s\S]+?)<\/td>/i, replaceTagsAndSpaces, parseBalance);
	getParam(html, result, 'prepay', /Предоплаченые услуги на месяц[^>]*>\s*([\s\S]+?)<\/td>/i, replaceTagsAndSpaces, parseBalance);
	getParam(html, result, 'bonuses', /Неактивированные бонусы[^>]*>\s*([\s\S]+?)<\/td>/i, replaceTagsAndSpaces, parseBalance);

	AnyBalance.setResult(result);
}